package com.partsoft.dits.dsm;

/**
 * 数据源-管理SQL提供器
 * @author neeker
 */
public interface DsmSQLProvider {
	
	/**
	 * 获取删除监控日志表的SQL
	 * @return
	 */
	String[] getDropMonitorLogSQLs(String monitorLogTable);

	/**
	 * 获取创建监控日志表的SQL
	 * @return
	 */
	String[] getCreateMonitorLogSQLs(String monitorLogTable);

	/**
	 * 获取创建插入监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getCreateInsertMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);

	/**
	 * 获取创建更新监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getCreateUpdateMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);
	
	/**
	 * 获取创建删除监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getCreateDeleteMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);

	/**
	 * 获取删除插入监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getDropInsertMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);

	/**
	 * 获取删除更新监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getDropUpdateMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);

	/**
	 * 获取删除删除监控触发器的SQL
	 * @param table 所属数据表
	 * @param dataid 数据表主键
	 * @param trigger 触发器名称
	 * @return
	 */
	String[] getDropDeleteMonitorSQLs(String table, String dataid, String trigger, String monitorLogTable, String logNS);

	/**
	 * 获取数据源连接校验的SQL
	 * @return
	 */
	String getConnectValidateSQL();

	/**
	 * 获取返回所有模式信息的SQL
	 * @return
	 */
	String getReturnSchemasSQL();

	/**
	 * 获取返回所有表信息的SQL
	 * @return
	 */
	String getReturnTablesSQL();

	/**
	 * 获取返回所有触发器信息的SQL
	 * @return
	 */
	String getReturnTriggersSQL();

	/**
	 * 获取返回所有视图信息的SQL
	 * @return
	 */
	String getReturnViewsSQL();
	
}
